Field of the Invention
This invention relates to device management and more particularly relates to sharing a device between multiple dependent hosts.
Description of the Related Art
Traditionally, computer components, such as a network interface (network interface card or “NIC”), storage devices, graphics cards, etc. connect to a processor of a host computer through a system bus. Traditional system buses are limited in the number of devices that can be connected and act somewhat like a group of wires that physically connect to a limited number of devices. Some system bus protocols, such as small computer system interface (“SCSI”), Institute of Electrical and Electronics Engineers (“IEEE”) 1394 (FireWire), Fiber Channel, universal serial bus (“USB”), peripheral component interconnect express (“PCI-e”) bus, a Serial Advanced Technology Attachment (“serial ATA”) bus, or the like, allow connection of external devices.
Many modern system buses, such as PCIe, use point to point connectivity and switch chips to interconnect multiple devices, while retaining traditional system bus functionality. However, when a device, such as a storage device, network interface (network interface card or “NIC”), etc. connected to a system bus is shared between multiple devices, the shared device is typically controlled through a single host. Data and commands from other hosts seeking access to the shared device pass through the host to the shared device and from the shared device through the controlling host back to the other hosts. This is inefficient because the requesting hosts have no ability to communicate directly to the shared device for data transfers. This precludes direct memory access (“DMA”) transfers and remote DMA (“RDMA”) transfers between the requesting hosts and the shared device.